﻿using System;

namespace MoroMoro.Samples.ToDoList.Domain.ToDos
{
    partial class ToDo
    {
        /// <summary>
        /// <see cref="ToDo.Title">ToDo のタイトル</see>に関するエラーを処理します。
        /// </summary>
        public interface ITitleErrorHandler
        {
            /// <summary>
            /// <see cref="ToDo.Title">ToDo のタイトル</see>の未入力エラーを処理します。
            /// </summary>
            void HandleTitleEmptyError();

            /// <summary>
            /// <see cref="ToDo.Title">ToDo のタイトル</see>の文字数超過エラーを処理します。
            /// </summary>
            void HandleTitleTooLongError();

            /// <summary>
            /// <see cref="ToDo.Title">ToDo のタイトル</see>の重複エラーを処理します。
            /// </summary>
            void HandleTitleDuplicationError();
        }

        /// <summary>
        /// <see cref="ToDo.Memos">ToDo のメモ一覧</see>に関するエラーを処理します。
        /// </summary>
        public interface IMemosErrorHandler
        {
            /// <summary>
            /// <see cref="ToDo.Memos">ToDo のメモ一覧</see>の要素数超過エラーを処理します。
            /// </summary>
            void HandleMemosTooManyError();

            /// <summary>
            /// <see cref="ToDo.Memos">ToDo のメモ一覧</see>のエラー内包エラーを処理します。
            /// </summary>
            void HandleMemosErrorContainingError();
        }

        /// <summary>
        /// <see cref="Builder">ToDo ビルダ</see>のビルドエラーを処理します。
        /// </summary>
        public interface IBuildErrorHandler : 
            ITitleErrorHandler, 
            IMemosErrorHandler
        {
        }
    }
}
